/**
 * 首页逻辑
 * 实现功能:
 * 1. 轮播图展示
 * 2. 导航菜单
 * 3. 推荐商品列表
 */

import banners from "../../mock/banner.js"; // 轮播图数据
import navigation from "../../mock/navigation.js"; // 导航菜单数据  
import goodsRecommend from "../../mock/goodsRecommend.js"; // 推荐商品数据

// 商品分类数据
const categories = [
  { id: 1, name: "精品配件", icon: "accessory" },
  { id: 2, name: "游戏设备", icon: "game" },
  { id: 3, name: "智能穿戴", icon: "wearable" },
  { id: 4, name: "智能家居", icon: "home" },
  { id: 5, name: "专业设备", icon: "professional" },
  { id: 6, name: "影音娱乐", icon: "entertainment" }
];

Page({
    // 页面数据
    data:{
      navigation: navigation, // 导航菜单数据
      banners: [], // 轮播图数据（若有需补充）
      goodsRecommend: [], // 推荐商品数据
      categories: [], // 商品分类数据
      // 首页推荐模块
      hotProducts: [], // 热销商品
      bestValueProducts: [], // 性价比商品
      newProducts: [] // 新品推荐
    },
    /**
     * 生命周期函数--监听页面加载
     * 设置页面初始数据:
     * - banners: 轮播图
     * - navigation: 导航菜单 
     * - goodsRecommend: 推荐商品
     */
    onLoad(){
        this.setData({
            banners,
            navigation, 
            goodsRecommend,
            categories,
            hotProducts: this.getHotProducts(goodsRecommend),
            bestValueProducts: this.getBestValueProducts(goodsRecommend),
            newProducts: this.getNewProducts(goodsRecommend)
        })
    },
    
    

    /**
     * 获取热销商品
     * @param {Array} products - 商品列表
     * @returns {Array} 热销商品列表
     */
    getHotProducts(products) {
      return [...products]
        .sort((a, b) => b.numberSells - a.numberSells)
        .slice(0, 6);
    },
    
    /**
     * 获取性价比商品
     * @param {Array} products - 商品列表
     * @returns {Array} 性价比商品列表
     */
    getBestValueProducts(products) {
      return [...products]
        .map(product => ({
          ...product,
          valueScore: product.numberSells / product.minPrice
        }))
        .sort((a, b) => b.valueScore - a.valueScore)
        .slice(0, 6);
    },
    
    /**
     * 获取新品推荐
     * @param {Array} products - 商品列表
     * @returns {Array} 新品推荐列表
     */
    getNewProducts(products) {
      // 简单地取前6个作为新品
      return products.slice(0, 6);
    },
    
    /**
     * 轮播图点击事件
     * @param {Object} e 事件对象
     * 点击后跳转到对应的详情页面
     */
	tapBanner(e) {
        const url = e.currentTarget.dataset.url;
		wx.navigateTo({
			url:`${url}?index=${e.currentTarget.dataset.index}`
		})
    },
    
    /**
     * 处理导航菜单点击
     * @param {Object} e 事件对象
     */
    handleNavigation(e) {
      const { linkurl: linkUrl, istab: isTab, title } = e.currentTarget.dataset;
    
      if (!linkUrl) {
        wx.showToast({
          title: '该功能开发中~',
          icon: 'none',
          duration: 1500
        });
        return;
      }
    
      if (isTab) {
        const app = getApp();
        let category = '';
        const pagePath = linkUrl.includes('?') ? linkUrl.split('?')[0] : linkUrl;
        
        // 解析 category 参数
        if (linkUrl.includes('?')) {
          const paramsStr = linkUrl.split('?')[1];
          const params = paramsStr.split('&');
          for (let param of params) {
            const [key, value] = param.split('=');
            if (key === 'category') {
              category = decodeURIComponent(value);
              break;
            }
          }
        }
        
        if (category) {
          app.globalData.targetCategory = category;
        }

        wx.switchTab({
          url: pagePath,
          fail: (err) => {
            console.error('切换tab页失败：', err);
            wx.showToast({
              title: '切换页面失败',
              icon: 'none'
            });
          }
        });
      } else {
        wx.navigateTo({
          url: linkUrl,
          fail: (err) => {
            console.error('跳转页面失败：', err);
            wx.showToast({
              title: '跳转页面失败',
              icon: 'none'
            });
          }
        });
      }
    },
    
    /**
     * 导航到商品分类页面
     * @param {Object} e 事件对象
     */
    navigateToCategory(e) {
      const category = e.currentTarget.dataset.category;
      wx.navigateTo({
        url: `/pages/category/index?category=${encodeURIComponent(category)}`
      });
    },
    
    /**
     * 查看更多推荐商品
     * @param {Object} e 事件对象
     */
    viewMoreRecommendations(e) {
      const type = e.currentTarget.dataset.type;
      let title = '';
      
      switch(type) {
        case 'hot':
          title = '热销商品';
          break;
        case 'value':
          title = '性价比商品';
          break;
        case 'new':
          title = '新品推荐';
          break;
        default:
          title = '推荐商品';
      }
      
      // 跳转到商品分类页面，并传递类型参数
      wx.navigateTo({
        url: `/pages/category/index?recommendType=${type}&title=${encodeURIComponent(title)}`
      });
    },
    
    /**
     * 添加商品到购物车
     * @param {Object} e 事件对象
     */
    addToCart(e) {
      const product = e.currentTarget.dataset.product;
      const app = getApp();
      
      // 初始化购物车
      if (!app.globalData.cartItems) {
        app.globalData.cartItems = [];
      }
      
      // 检查商品是否已在购物车中
      const existingItemIndex = app.globalData.cartItems.findIndex(item => item.id === product.id);
      
      if (existingItemIndex > -1) {
        // 如果已在购物车，增加数量
        app.globalData.cartItems[existingItemIndex].count = 
          (app.globalData.cartItems[existingItemIndex].count || 1) + 1;
      } else {
        // 如果不在购物车，添加新商品
        app.globalData.cartItems.push({
          ...product,
          count: 1
        });
      }
      
      wx.showToast({
        title: '已添加到购物车',
        icon: 'success'
      });
    },
    
    /**
     * 查看商品详情
     * @param {Object} e 事件对象
     */
    viewProductDetail(e) {
      const product = e.currentTarget.dataset.product;
      // 这里可以跳转到商品详情页面
      wx.showToast({
        title: '商品详情功能开发中',
        icon: 'none'
      });
    },

    /**
 * 查看更多推荐商品（跳转到tabBar的category页面）
 * @param {Object} e 事件对象
 */
viewMoreRecommendations(e) {
  const type = e.currentTarget.dataset.type;
  let title = '';
  
  switch(type) {
    case 'hot':
      title = '热销商品';
      break;
    case 'value':
      title = '性价比商品';
      break;
    case 'new':
      title = '新品推荐';
      break;
    default:
      title = '推荐商品';
  }
  
  // 获取全局应用实例
  const app = getApp();
  
  // 将参数存入全局变量（因为switchTab不支持带复杂参数跳转）
  app.globalData.categoryParams = {
    recommendType: type,
    title: title
  };
  
  // 使用switchTab跳转到tabBar页面category
  wx.switchTab({
    url: '/pages/category/index', // 确保此路径与app.json中tabBar配置的路径一致
    fail: (err) => {
      console.error('跳转到分类页面失败：', err);
      wx.showToast({
        title: '跳转失败',
        icon: 'none'
      });
    }
  });
}
})